# 导入必要的库
from lazypredict.Supervised import LazyClassifier # LazyPredict库中的LazyClassifier类，用于快速评估各种分类模型的性能。
import util # 自定义工具模块，包含load和dump函数。
import lazypredict # LazyPredict库，用于快速评估各种分类模型的性能。
from sklearn.metrics import accuracy_score # 从Scikit-learn库中引入accuracy_score函数，用于计算分类模型的准确率。
from util import get_config_value
import xgboost


# 1. 加载训练集和测试集
# 调用util模块中的load函数，参数分别为数据名和保存路径
X_train, X_test, y_train, y_test = util.load_file("X_train, X_test, y_train, y_test", f'{get_config_value("Xy_root")}/Xy')

# 2. 使用LazyClassifier进行模型指标对比
print("开始评估所有的模型:")
clf = LazyClassifier()

# 获取每一个模型的预测对比结果
scores, _ = clf.fit(X_train, X_test, y_train, y_test)
print(scores)

# 3. 获取F1分数最高的模型
# 获取F1分数最高行的索引值，即：模型名称
best_model_name = scores['F1 Score'].idxmax()
print("F1分数最高的模型是: ", best_model_name)
# 根据模型名称，从模型字典中获取模型对象
best_model = clf.models[best_model_name]

# 4. 序列化最佳模型
util.save_file(best_model, "最好的F1分数的模型", f'{get_config_value("model_root")}/best_model')